﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Outlook;
using System.Runtime.InteropServices;
using System.Threading;

namespace Formation_Entreprise
{
    /// <summary>
    /// La classe OutlookMessaging est utiliser afin de faire le pont entre notre application 
    /// et l'application Microsoft Outlook.
    /// </summary>
    class OutlookMessaging
    {
        /// <summary>
        /// Methode EnvoyerMessage envoie un message a une seul personne.
        /// </summary>
        /// <param name="email">L'adresse email du destinataire.</param>
        public static void EnvoyerMessage(string email)
        {
            try
            {
                // Création de objet Application & MailItem
                Application oApplication = new Application();
                MailItem oMessage = (MailItem)oApplication.CreateItem(OlItemType.olMailItem);

                // Ajout du contact du email
                oMessage.Recipients.Add(email);

                // Ouverture de la fenêtre Outlook afin de saisir le message.
                oMessage.Display(true);
            }
            catch (COMException e) 
            {
                Process.Start("OUTLOOK.EXE");
                System.Windows.Forms.MessageBox.Show("Outlook est en cours de démarrage. Cliquer sur le bouton de nouveau lorsque Outlook sera démarrer completement.");
            }
        }


        /// <summary>
        /// Methode EnvoyerMessage envoie un message a chaque destinataire de la liste fournie
        /// </summary>
        /// <param name="emails">Liste de destinataire</param>
        public static void EnvoyerMessage(List<string> emails)
        {            
            // Création de objet Application & MailItem
            Application oApplication = new Application();
            MailItem oMessage = (MailItem)oApplication.CreateItem(OlItemType.olMailItem);

            // Création de la chaine de destinataire.
            string multipleMails = string.Empty;

            foreach (string s in emails)
                multipleMails += s + ";";
            oMessage.Recipients.Add(multipleMails);

            // Ouverture de la fenêtre Outlook afin de saisir le message.
            oMessage.Display(true);
        }    
    }
}
